The use of magnetic tape drives for bulk storage in computer systems is well known. While useful, such devices have undesirable characteristics that must be minimized.
For purposes of this specification, the terms "tape device" and "tape devices" shall refer to and mean data storage devices which store and access data serially, whether in "streaming" fashion or "start/stop" fashion, on or in a storage media of finite known length, such as magnetic tape devices (e.g. reel-to-reel and cartridge types), optical disks configured as tape devices, helical scan drives, and the like; and the terms "concurrent" and "concurrently" in the context of describing the timing of events controlled by a computer operating system shall also mean the overlapping or time multiplexing of such events, such as multiple programs being executed by the operating system apparently simultaneously. For purposes of this specification, the term "write head" shall refer to and mean the instrument by which data is actually recorded upon a tape or tape-like storage medium. For example, magnetic tapes can be recorded with a magnetic write head and optical disks configured as tape devices can be recorded with an optical write head.
In a computer system, the operational speed that data can be read, processed, and then written to a tape device is normally limited by the speed of the tape device. Advances in the pertinent art have increased many fold the access speed of disk devices and the processing speed of computers. Unfortunately increases in tape device speed have not kept pace. With faster disk reads and processing, whole operations are bottlenecked by the speed of the tape devices.
It has been found that in prior art computer systems when data is to be written to a tape or tape-like storage medium, the input/output (I/O) operation requests made by an application program to the system involving the writing of data to the medium are sent as fast as possible by the operating system to the tape device controlling the medium. There is no attempt to regulate the rate at which such write requests are sent to the device driver. This causes the data and I/O requests to back up and wait in a queue to be written to tape. This queue at some point causes the operating system or application program to stop and wait for the completion of one or more of the queued operations. This creates a sort of traffic jam for the data and an irregular write request rate. When this happens, the tape starts and stops over and over. This start and stop process is an agonizingly slow operation since the tape has to decelerate, rewind to the place where it last wrote data before decelerating (since it cannot write data while decelerating or accelerating), and then accelerate again in order to write data at maximum speed. This start and stop process is expensive in terms of overall or elapsed time and therefore a costly process. In order to work at their peak throughout capacity, tape devices need a controlled flow, i.e., a steady flow of data and I/O requests to the tape sub-system.
In order to speed up the whole operation, the tape devices must be able to write data concurrently with the reading of disk data and the processing. For concurrency to occur, the data to be written must be put into a high-speed memory cache.
It has been known in the prior art to use cache memories with output devices, such as tape drives, in both conventional memory management systems as well as in virtual memory systems.
A problem occurs when the tape reaches an end-of-media indicator (typically a reflector on the tape itself used as an end-of-tape marker). At that point the cache must be flushed out or write to the media. If the cache contains more data than can fit on a length (e.g. 10 feet) of writable media beyond the end-of-tape marker (past-end-of-tape media), some of the data will be lost or the tape device will signal a fatal drive error. Therefore the current art limits the size of the tape I/O data cache to the amount of data that can be written onto the past-end-of-tape media. This has the effect of limiting the number of concurrent tape write operations, which in turn limits the speed of the whole system.
It would be desirable to be able to use a cache memory larger than such a system has heretofore been able to use, i.e., larger than the data capacity of the past-end-of-tape media. It would also be desirable to be able to detect a near end-of-tape condition sufficiently in advance of the conventional end-of-tape indicator to allow the system to flush all of the cached I/O requests before the end of the writable portion of the medium is passed. The net result would be more concurrency than heretofore available, which in turn speeds up the whole system.